// router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';

// 动态扫描 views 目录及其所有子目录下的所有 .vue 或 .tsx 文件
const modules = import.meta.glob('../views/**/*.{vue,tsx}');

// 递归构建路由
const buildRoutes = (modules: Record<string, () => Promise<any>>, basePath = ''): Array<RouteRecordRaw> => {
    const routes: Array<RouteRecordRaw> = [];

    for (const path in modules) {
        const name = path.match(/\/([^/]+)\.(vue|tsx)$/)?.[1];
        if (name) {
            // 这是一个页面文件
            const routePath = basePath + '/' + name.charAt(0).toLowerCase() + name.slice(1);
            const component = () => import('..' + path.slice(2));
            routes.push({
                path: routePath === '/home' ? '/' : routePath,
                name: name,
                component,
                meta: {},
            });
        } else {
            // 这是一个文件夹，递归处理
            const folderName = path.split('/').slice(-2, -1)[0]; // 获取文件夹名称
            const folderPath = basePath + '/' + folderName;
            routes.push(...buildRoutes(modules, folderPath));
        }
    }
    let text = JSON.stringify(routes);
    console.log(1111111,text)
    return routes;

};

// 创建扫描包路由
const routesFromModules: Array<RouteRecordRaw> = buildRoutes(modules);

// 自定义路由
const customRoutes: Array<RouteRecordRaw> = [
    {
        path: '/about',
        name: '优先级较低显示的是文件名',
        component: () => import('../router/Testview.vue'),
        meta: { displayName: 'About优先显示', icon: 'about' },
    },
    // 添加其他自定义路由
];

// 合并路由数组
const routes: Array<RouteRecordRaw> = [...routesFromModules, ...customRoutes];

// 创建路由实例
const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL || '/'),
    routes,
});

// 路由守卫：在路由变化时动态添加 meta 信息
export default router;